In conventional computing applications, it is often necessary to assign names to a number of entities. The term “entity,” as used herein, refers to anything to which a name can be assigned such as, for example, a page, a location, a document, a recipient, or an address. Names may be strictly numeric, or may include numbers, letter, symbols, other characters, or any combination thereof. Web page ranking is a common scenario in which it is necessary to assign names to entities. In particular, during web page ranking, a score is repeatedly propagated from a current page to the recipient pages that are pointed to by the current page. The current page may be considered to “point” to a recipient page if, for example, the current page has a uniform resource locator (URL) or another link that points to the recipient page. For example, if a current page has a score of 30, and the current page points to three recipient pages, then a score of 10 points each may be propagated from the current page to each of the three recipient pages to which it points. In such an iterative process, it is important to have immediate access to each of the recipient pages so that the score can be immediately propagated from the current page to the recipient pages. A common technique for providing this immediate access is to store a score in random access memory (RAM) for each of the recipient pages. To easily access these scores, each page is assigned a numeric name that describes where in RAM that score is located.
One of the challenges related to entity naming schemes is that, in conventional computing applications, the number of total entities to which names must be assigned is often quite large. For example, for web page ranking, it may currently be necessary to assign 20 billion or more names, with the number of existing web pages continuing to rapidly increase. Because a program may demand access to any of the named pages, the amount of memory required to be active is typically proportional to the number of named pages. Thus, for example, between 80 and 320 gigabytes or more of active memory may be required for 20 billion names. This greatly exceeds the capacity of any one computer and necessitates a complicated memory distribution implementation.